#include <set>
#include <iostream>

using namespace std;

#define N 10
#define OUT(map_a, msg) do{ \
    cout << msg; \
    for (auto i = map_a.begin(); i != map_a.end(); i++) cout << *i  << "  "; \
    cout << endl; \
}while(0)

int main(int argc, char const *argv[])
{
    /*****************************************************************************************************
     * set容器
     * ---------------------------------------------------------------------------------------------------
     * set容器中存储的最小单位也是pair， 只是键值必须相同的pair
     *****************************************************************************************************/
    // -----------------------------------------------
    // --- 定义 ----
    // -----------------------------------------------
    set<int> set_a;
    set<int> set_b{1 , 3, 5};
    OUT(set_b, "输出: ");

    // -----------------------------------------------
    // --- 增 ----
    // -----------------------------------------------
    set<int> stu;
    stu.insert(101);
    stu.insert(201);

    // -----------------------------------------------
    // --- 删 ----
    // -----------------------------------------------
    stu.erase(101);

    // -----------------------------------------------
    // --- 改 ----
    // -----------------------------------------------
    // 不建议直接修改set的值， 会破坏它自动对元素排序的属性
    // 所以如果要修改， 就先删除，再新增
    stu.erase(101);
    stu.insert(105);

    // -----------------------------------------------
    // --- 查 ----
    // -----------------------------------------------
    set<int>::iterator i = stu.find(105);
    cout << "查找： stu.find(105) = " << *i << endl;

    /*****************************************************************************************************
     * 成员函数
     * ---------------------------------------------------------------------------------------------------
     * array.begin()        返回：随机访问迭代器  首元素位置指针   
     * 
     *****************************************************************************************************/
    
    // array.begin() 
    // -----------------------------------------------
    
    return 0;
}
